package co.com.bean.cargainicial;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;

import co.com.smart.maestro.infraestructure.dto.CargaInicialDTO;
import co.com.smart.maestro.infraestructure.dto.DatosMaestroDTO;
import co.com.smart.maestro.infraestructure.dto.PaisDTO;
import co.com.smart.mapper.Mapper;
import co.com.smart.persistence.entity.DatosMaestroFacadeLocal;
import co.com.smart.persistence.entity.PaisFacadeLocal;
import co.com.smart.persistence.entity.dto.SmartDatosMaestro;
import co.com.smart.persistence.entity.dto.SmartPais;
import co.com.smart.session.DelegateContextEJB;
import co.com.smart.utilidades.Constantes;

/**
 * Session Bean implementation class CargaInicialBean
 */
@Stateless(mappedName = "ejb/CargaInicialBean")
public class CargaInicialBean implements CargaInicialBeanLocal{
	
	private DatosMaestroFacadeLocal facadedatosmaestros;
	private PaisFacadeLocal facadepais;
	
	public CargaInicialBean(){
		facadedatosmaestros = DelegateContextEJB.getDatosMaestroFacadeLocal();
		facadepais = DelegateContextEJB.getPaisFacadeLocal();
	}
	
	
	@Override
	public CargaInicialDTO cargainicial(){
		
		List<DatosMaestroDTO> finddatosmaestrotipoubicacion = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrotipozona = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrosexo = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrotipoidentificacion = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrogrado = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrojornada = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrosector = new ArrayList<DatosMaestroDTO>();
		List<DatosMaestroDTO> finddatosmaestrocalendario = new ArrayList<DatosMaestroDTO>();
		List<PaisDTO> findpais = new ArrayList<PaisDTO>(); 
		
		for (SmartDatosMaestro entity : facadedatosmaestros.findAll()){
			if(entity.getSmfhretiro() == null){
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.TIPOUBICACION.getMaestro())){
					finddatosmaestrotipoubicacion.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.TIPOZONA.getMaestro())){
					finddatosmaestrotipozona.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.SEXO.getMaestro())){
					finddatosmaestrosexo.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.TIPOIDENTIFICACION.getMaestro())){
					finddatosmaestrotipoidentificacion.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.GRADOS.getMaestro())){
					finddatosmaestrogrado.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}

				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.JORNADA.getMaestro())){
					finddatosmaestrojornada.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.SECTOR.getMaestro())){
					finddatosmaestrosector.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}
				
				if(Mapper.mapperSmartDatosMaestroToDto(entity).getMaestrodto().getComaestro().equals(Constantes.MaestrosResponse.CALENDARIO.getMaestro())){
					finddatosmaestrocalendario.add(Mapper.mapperSmartDatosMaestroToDto(entity));	
				}			
			}
		}
		
		for (SmartPais entity : facadepais.findAll()){
			if(entity.getSmFhretiro() == null){
				findpais.add(Mapper.mapperSmartPaisToDto(entity));
			}
		}

		CargaInicialDTO findcargainicial =  new CargaInicialDTO();
		
		findcargainicial.setListatipoubicacion(finddatosmaestrotipoubicacion);
		findcargainicial.setListatipozona(finddatosmaestrotipozona);	
		findcargainicial.setListasexo(finddatosmaestrosexo);	
		findcargainicial.setListatipoidentificacion(finddatosmaestrotipoidentificacion);	
		findcargainicial.setListagrados(finddatosmaestrogrado);	
		findcargainicial.setListajornada(finddatosmaestrojornada);	
		findcargainicial.setListasector(finddatosmaestrosector);	
		findcargainicial.setListacalendario(finddatosmaestrocalendario);				
		findcargainicial.setListapais(findpais);
		
		return findcargainicial;
	}
}
